/*****************************************************************************************
 * ETS
 * 
 * Cours:		LOG121
 * Session:		A2013
 * Groupe:		04
 * Projet:		Laboratoire #3
 * �tudiants:	Frederic-Simon Mimeault
 * 				Francisco Felipe Quilodran
 * 
 * Professeur:	Francis Cardinal
 * 
 * Fichier:		De.java
 * Description:
 * 		Cette classe definie toutes les caracteristiques d'un dés 
 * Date de creation:	2013-11-01
 * Date dern. modif.:	2013-11-12
 * ****************************************************************************************
 * Historique des modifications
 * ****************************************************************************************
 * 2013-11-01 Version initiale
 * 2013-11-11 Impl�mentation des fonctions
 * 2013-11-12 Ajout de la documentation
 *****************************************************************************************/
package com.mq.etsmtl.framework;

import java.util.Random;

public class De implements Comparable<De>
{
	/**
	 * Nombre de faces du dé
	 */
	private int nbreFaces;
	/**
	 * face choisit de façon aleatoire
	 */
	private int faceCourant;
	private Random random;
	/**
	 * Constructeur de De. 
	 * @param nbreFaces est nombre de faces
	 * @throws IllegalArgumentException Lorsque nbreFaces est inférieur à 2
	 */
	public De(int nbreFaces)
	{
		random = new Random();
		if(nbreFaces<2)
		{
			throw new IllegalArgumentException();
		}
		else
		{
			this.nbreFaces=nbreFaces;
			this.faceCourant=0;
		}
	}
	/**
	 * Compare deux dés selon leur face courante.
	 * @param deArg est le dé comparant
	 */
	@Override
	public int compareTo(De deArg) 
	{
		if(deArg != null){
			return this.faceCourant < deArg.getFaceCourant()?-1:this.faceCourant > deArg.getFaceCourant()?1:0;	
		}else{
			throw new IllegalArgumentException("Le De a comparer ne peut pas etre null");
		}
		
	}
	/**
	 * 
	 * @return le nombre de faces du dé
	 */
	public int getNbreFaces() 
	{
		return nbreFaces;
	}
	/**
	 * 
	 * @return la face courant choisit de façon aleatoire
	 */
	public int getFaceCourant() 
	{
		return faceCourant;
	}
	/**
	 * public void lancerDes() change la valeur de la faceCourant de façon aleatoire
	 * dans un écart de 1 jusqu'à le nombre de faces 
	 */
	public void lancerDes()
	{
		//http://www.journaldunet.com/developpeur/pratique/developpement/12315/comment-g-eacute-n-eacute-rer-un-nombre-al-eacute-atoire-random-en-java-compris-entre-deux-chiffres-nbsp.html
		
		//Random randomFace = new Random();
		//faceCourant = randomFace.nextInt(nbreFaces ) + 1;
		
		faceCourant = random.nextInt(nbreFaces) + 1;
	}
	
	
		

}

